The present invention relates to a software-testing automation system.
Developing and testing software is an involved process. Typically, a software developer utilizes a software development platform to build a piece of software. In the development environment, the software may be tested by the developer, and after the developer is satisfied with testing results, the piece of software may be deployed to create an image. The deployed image is different than the piece of software made up of developer code in that the deployed image does not require the development environment to run. That is, the deployed image may run on the designated software platform without the development environment.
There are many different kinds of software platforms. One of the most widely recognized software platforms is the operating system. Further, there are many commercial operating systems available. Typically, a deployed image for one particular operating system will not run properly on another operating system. Some development environments attempt to provide tools to make porting of software from one platform to another (that is, one operating system to another) easier. However, this is not the easiest task.
In addition to operating systems, another type of platform is the virtual machine. The virtual machine lies somewhere between the development environment and the operating system. A deployed image for a particular virtual machine may run in that virtual machine in a number of different operating systems. As such, a deployed image for a virtual machine may be operating system independent. All in all, developing software is an involved process that involves quite a bit of testing in the development environment prior to deploying the piece of software as a deployed image for operation either on a specific virtual machine or in a specific operating system. There are some existing tools that assist the software developer in testing software, but these tools are either restricted to use in the development environment, or are platform specific, that is, designed for use in a single virtual machine or operating system.
For the foregoing reasons, there is a need for a software-testing automation system that improves over the prior art.
It is, therefore, an object of the present invention to provide a software-testing automation system for testing a plurality of deployed images that are spread across multiple software platforms wherein each deployed image includes a test component configured to accept a connection on a known testing port, and in which a test engine runs a test on an image by requesting a connection on the known testing port.
It is another object of the present invention to provide a software testing automation system that communicates with test tools spread across multiple platforms, and preferably may run external scripts, programs, and data base queries.
In carrying out at least one object, a software-testing automation system for testing a plurality of deployed images that are spread across multiple software platforms is provided. Each deployed image includes a test component configured to accept a connection on a known testing port. The test component for a deployed image is inserted in a development environment and is then integrated into the image upon deployment. The system comprises a test engine and a user interface. The test engine is configured to run a plurality of tests on the plurality of deployed images. The test engine runs a test on an image under test by requesting a connection to the corresponding test component on the known testing port, and sending commands over the connection. The user interface is connected to the test engine to allow a user to control the test engine and to view test results.
Preferably, the test engine is further configured to create and manage tests under the direction of a user interacting with the test engine through the user interface. Further, preferably, the test engine is further configured to display test results through the user interface. Further, preferably, at least one of the known testing ports is a transmission control protocol/Internet protocol (TCP/IP) well-known port. More preferably, each known testing port is the same transmission control protocol/Internet protocol (TCP/IP) well-known port.
Further, in a preferred embodiment, each test component is configured to, upon receiving commands over the testing port, operate on an object level to enter text into a text input box in the corresponding image. Further, preferably, each test component is configured to, upon receiving commands over the testing port, operate on an object level to retrieve a text value from a text box in the corresponding image. Further, preferably, each test component is configured to, upon receiving commands over the testing port, operate on an object level to open a new window in the corresponding image. Further, preferably, each test component is configured to, upon receiving commands over the testing port, operate on an object level to press a button in a graphical user interface of the corresponding image.
Further, in carrying out the present invention, a software-testing automation system for testing a plurality of deployed images that are spread across multiple software platforms is provided. The software platforms include multiple different virtual machines and operating systems. The system comprises a plurality of test components, a test engine, and a user interface. Each deployed image includes a corresponding test component. Each test component is configured to accept a connection on a known testing port. The corresponding test component for a deployed image is inserted in a development environment and is then integrated into the image upon deployment such that the test component for a deployed image operates at an object level of a corresponding software platform. The test engine is configured to run a plurality of tests on the plurality of deployed images. The test engine runs a test on an image under test by requesting a connection to the corresponding test component on the known testing port, and sending commands over the connection. The user interface is connected to the test engine to allow a user to control the test and to view test results.
Preferably, the test engine is further configured to create and manage tests under the direction of a user interacting with the test engine through the user interface. Further, preferably, the test engine is further configured to display test results through the user interface.
Preferably, at least one of and preferably each known testing port is a transmission control protocol/Internet protocol (TCP/IP) well-known port. More preferably, all test components use the same well-known port.
In a preferred embodiment, each test component is configured to, upon receiving commands over the testing port, operate on an object level to enter text into a text input box in the corresponding image. Preferably, each test component is configured to, upon receiving commands over the testing port, operate on an object level to retrieve a text value from a text box in the corresponding image. Preferably, each test component is configured to, upon receiving commands over the testing port, operate on an object level to open a new window in the corresponding image. Preferably, each test component is configured to, upon receiving commands over the testing port, operate on an object level to press a button in a graphical user interface of the corresponding image.
Still further, in carrying out the present invention, a computer readable storage medium having instructions stored thereon executable by a computer to perform automated software testing for a plurality of deployed images that are spread across multiple software platforms is provided. Each deployed image includes a test component configured to accept a connection on a known testing port. The test component for a deployed image is inserted in a development environment and is then integrated into the image upon deployment. The medium comprises test engine instructions for running a plurality of tests on the plurality of deployed images. The test engine instructions run a test on an image under test by requesting a connection to the corresponding test component on the known testing port and sending commands over the connection.
Even further, in carrying out the present invention, a software-testing automation system for communicating with a plurality of test tools that are spread across multiple software platforms is provided. Each test tool has an applications programming interface. The system comprises a test engine, a plurality of adaption layers, and a user interface. The test engine is configured to communicate with the plurality of test tools. The test engine has a well-known interface. Each adaption layer connects the test engine well-known interface to the applications programming interface of a corresponding test tool. The user interface is connected to the test engine to allow a user to control the test engine and to view the test results.
In a preferred embodiment, at least one of the test tools is a graphical user interface test tool operative to receive commands through the corresponding adaption layer. Preferably, the graphical user interface test tool is configured, upon receiving commands, through the corresponding adaption layer, to operate on an object level to enter text into a text input box in the corresponding image, retrieve a text value from a text box in the corresponding image, open a new window in the corresponding image, and press a button in the corresponding image. Further, preferably, the test engine is further configured to display test results through the user interface. Even further, preferably, the test engine is configured to create and manage tests under the direction of a user interacting with the test engine through the user interface.
In a preferred implementation, the test engine is further configured to run an external script that is external to the test engine, in addition to communicating with one or more test tools and possibly one or more test components. Further, preferably, the test engine is configured to run a database query. Still further, the test engine is preferably configured to run an external program that is external to the test engine.
Yet further, in carrying out the present invention, a software-testing automation system for communicating with a plurality of test tools that are spaced across multiple software platforms is provided. Each test tool has an applications programming interface. The system comprises a test engine, a plurality of adaption layers, and a user interface. The test engine is configured to communicate with the plurality of test tools. The test engine has a well-known interface. The test engine is further configured to run an external script, to run an external program, and to query a data base. Each adaption layer connects the test engine well-known interface to the applications programming interface of a corresponding test tool. The user interface is connected to a test engine to allow a user to control the test engine and direct the communications through the adaption layers with the test tools, and direct the running of scripts and programs, as well as the running of data base queries.
The advantages associated with the present invention are numerous. For example, embodiments of the present invention provide a test engine that can drive any kind of test automation tool from one common user interface. The user interface presents the modular building-block test steps in such a way that the tester does not need to know about how the test steps are implemented by the test automation tools. Moreover, the engine allows the tester to mix test steps that will be executed by different tools in one test case, which can be executed at one button press. Specifically, some embodiments of the present invention provide a software-testing automation system for testing a plurality of deployed images that are spread across multiple software platforms with each deployed image include a test component.